连接到远程服务器,函数原型:
bool $swoole_client->connect(string $host, int $port, float $timeout = 0.5, int $sock_flag = 0)
connect方法接受4个参数:
$host
是远程服务器的地址,2.0.12
或更高版本可直接传入域名,底层会自动进行协程切换解析域名为IP
地址$port
是远程服务器端口$timeout
是网络IO
的超时时间,包括connect/send/recv
,单位是秒s
,支持浮点数。默认为0.5s
,即100ms
,超时发生时,连接会被自动close
掉connect
操作会有一次协程切换开销,connect
发起时yield
,完成时resume
原先异步客户端不支持
recv
超时,现在协程版已经支持超时,复用上面的$timeout
参数
connect
不会发生阻塞,connect
事件触发后,切回PHP
上下文。
if ($cli->connect('127.0.0.1', 9501)) {
$cli->send("data");
} else {
echo "connect failed.";
}
如果连接失败,会返回false
超时后返回,检查
$cli->errCode
为110
connect
连接失败后,不可直接进行重连。必须使用close
关闭已有socket
,然后再进行connect
重试。
//连接失败
if ($cli->connect('127.0.0.1', 9501) == false) {
//关闭已有socket
$cli->close();
//重试
$cli->connect('127.0.0.1', 9501);
}